The transfer of large blocks of data between an agent memory within a computer and a second storage device, such as a magnetic disk or other memory device, is often most efficiently accomplished through a transfer technique called direct memory access (DMA). In direct memory access, data is transferred into and out of the computer memory through the memory bus under the management of a DMA controller. The computer's central processing unit (CPU) initiates the transfer by supplying the DMA controller with the starting address of the memory block where data is to be read or stored, depending on the direction of the data transfer, and the number of words to be transferred. After that, the DMA controller starts and continues the transfer of data into or out of the memory, removing the CPU from the transfer operation to perform other functions.
A problem can arise during DMA transfers of multi-byte word data when the fetching address of the sending agent memory or the storing address of the receiving agent memory does not start at a word-boundary location. One method of addressing this problem is to convert the DMA word transfer into a DMA byte transfer, transferring the data in bytes containing eight bits rather than in multi-byte words containing sixteen, twenty-four, thirty-two, or possibly more data bits. This method obviously reduces performance of the transfer operation. A second solution of the above-described word transfer problem requires transfer of the multi-byte word data to a temporary buffer area in the receiving agent memory. Software on the receiving agent has to move and also byte-align the raw word data from the temporary storage buffer to its required location. This method also severely reduces the performance of the transfer operation.